package Negocio;

import Datos.Conexion;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Luis
 */
public class clsCategoria {

    public static boolean isHabilitado;

    public static void insertarCategoria(String nombre, int idSubCategoria, int stockMin) {
        try {
            String sql = "call `insert_Categoria`(?,?,?)";
            CallableStatement cst = Conexion.conn.prepareCall(sql);
            cst.setString(1, nombre);
            if (idSubCategoria == -1) {
                cst.setObject(2, null);
            } else {
                cst.setInt(2, idSubCategoria);
            }
            cst.setInt(3, stockMin);
            cst.executeUpdate();
        } catch (Exception e) {
            System.out.println("error al insertar categoria -- " + e);
        }
    }

    public static void actualizarCategoria(int idCategoria, String nombre, int idSubCategoria, int stockMin) {
        try {
            String sql = "call `update_Categoria`(?,?,?,?)";
            CallableStatement cst = Conexion.conn.prepareCall(sql);
            cst.setInt(1, idCategoria);
            cst.setString(2, nombre);
            if (idSubCategoria == -1) {
                cst.setObject(3, null);
            } else {
                cst.setInt(3, idSubCategoria);
            }
            cst.setInt(4, stockMin);

            cst.executeUpdate();
        } catch (Exception e) {
            System.out.println("error al actualizar categoria -- " + e);
        }
    }

    public static void mostrarTablaCategoria(JTable jtb, String like) {

        try {
            CallableStatement cst = Conexion.conn.prepareCall("call mostrar_Categoria(?)");
            cst.setString(1, "%" + like + "%");
            ResultSet rs = cst.executeQuery();
            DefaultTableModel dtm = (DefaultTableModel) jtb.getModel();
            dtm.setRowCount(0);
            Object o[] = new Object[dtm.getColumnCount()];
            while (rs.next()) {
                for (int i = 0; i < o.length; i++) {
                    o[i] = rs.getObject(i + 1);
                }
                dtm.addRow(o);
            }
            jtb.setModel(dtm);
        } catch (Exception e) {
            System.out.println("errror al mostrar categoria -- " + e);
        }

    }

    public static int getIdCategoria(String nombre) {
        int id = -1;
        try {
            CallableStatement cst = Conexion.conn.prepareCall("call obtener_idCategoria(?)");
            cst.setString(1, nombre);
            ResultSet rs = cst.executeQuery();
            while (rs.next()) {
                id = rs.getInt(1);
            }

        } catch (Exception e) {
            System.out.println("error al obtener idCategoria -- " + e);
        }

        return id;
    }

    public static String getNombre(int idCategoria) {
        if (idCategoria == -1) {
            return null;
        }
        try {
            CallableStatement cst = Conexion.conn.prepareCall("call obtener_nombreCategoria(?)");
            cst.setInt(1, idCategoria);
            ResultSet rs = cst.executeQuery();
            rs.next();
            return rs.getString(1);

        } catch (Exception e) {
            System.out.println("error al obtener Nombre -- " + e);
        }
        return null;
    }

    public static void obtener_listaCategorias(JComboBox cbo, String sql) {
        isHabilitado = false;
        try {
            ResultSet rs = Conexion.executeQuery(Conexion.conn, sql, null);
            cbo.removeAllItems();
            cbo.addItem("Ver Todos");
            while (rs.next()) {
                cbo.addItem(rs.getString(1));
            }
        } catch (Exception e) {
            System.out.println("error al obtener lista de categorias " + e);
        }
        isHabilitado = true;
    }
}
